﻿using ProyectoSalvadorDelMundo.Helpers;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


namespace ProyectoSalvadorDelMundo.CatalogosGrupales.Servidores
{
    public partial class Servidores : PaginaBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
           

            if (!IsPostBack)
            {
                // Navegacion
                linkNav.NavigateUrl = ConfigurationManager.AppSettings.GetValues("linkNav-NavigateUrl")[0];
                linkNav.Text = ConfigurationManager.AppSettings.GetValues("linkNav-Text")[0];

                lblNavActiva.Text = ConfigurationManager.AppSettings.GetValues("lblNavActiva-Text")[0];
                lblNavActiva.CssClass = ConfigurationManager.AppSettings.GetValues("lblNavActiva-CssClass")[0];

                // Titulo
                lblTitulo.Text = ConfigurationManager.AppSettings.GetValues("lblTitulo-Text")[0];
                lblTitulo.CssClass = ConfigurationManager.AppSettings.GetValues("lblTitulo-CssClass")[0];

                // Agregar
                btnAgregar.Text = ConfigurationManager.AppSettings.GetValues("btnAgregar-Text")[0];
                btnAgregar.ToolTip = ConfigurationManager.AppSettings.GetValues("btnAgregar-ToolTip")[0];
                btnAgregar.CssClass = ConfigurationManager.AppSettings.GetValues("btnAgregar-CssClass")[0];
                btnAgregar.Attributes.Add("formnovalidate", "formnovalidate");

                // Buscar
                btnBuscar.ImageUrl = ConfigurationManager.AppSettings.GetValues("btnBuscar-ImageUrl")[0];
                btnBuscar.ToolTip = ConfigurationManager.AppSettings.GetValues("btnBuscar-ToolTip")[0];
                btnBuscar.AlternateText = ConfigurationManager.AppSettings.GetValues("btnBuscar-AlternateText")[0];
                btnBuscar.CssClass = ConfigurationManager.AppSettings.GetValues("btnBuscar-CssClass")[0];
                btnBuscar.Attributes.Add("formnovalidate", "formnovalidate");   

                txtBuscar.Attributes.Add("placeholder", ConfigurationManager.AppSettings.GetValues("txtBuscar-placeholder")[0]);
                txtBuscar.CssClass = ConfigurationManager.AppSettings.GetValues("txtBuscar-CssClass")[0]; ;

                // Popup
                //-----------------
                lblAccion.Visible = false;
                lblAccion.Enabled = false;
                lblAccion.Text = string.Empty;

                pnlAgregarEditar.CssClass = "modal-dialog modal-lg";
                pnlAgregarEditar.Attributes.Add("Style", "display: none");

                // Popup Header
                btnPopX.Text = "X";
                btnPopX.CssClass = "close";
                btnPopX.Attributes.Add("formnovalidate", "formnovalidate");
                lblPopupTitulo.CssClass = "modal-title";




                // Popup Contenido
                txtId.Enabled = false;

                //lblFoto.Text = "Foto";
                //lblFoto.AssociatedControlID = "txtFoto";
                //lblFoto.CssClass = "col-sm-2 control-label";
                //txtFoto.Attributes.Add("placeholder", "Ingresar FOTO");
                //txtFoto.CssClass = "form-control";

                // Texbox para ingresar el nombre.
                lblNombre.Text = "Nombre";
                lblNombre.AssociatedControlID = "txtNombre";
                lblNombre.CssClass = "col-sm-2 control-label";
                txtNombre.Attributes.Add("placeholder", "Ingresar Nombre");
                txtNombre.CssClass = "form-control";
                //txtNombre.Attributes.Add("required", "required");
                
                // Texbox para ingresar el apellido.
                lblApellido.Text = "Apellido";
                lblApellido.AssociatedControlID = "txtApellido";
                lblApellido.CssClass = "col-sm-2 control-label";
                txtApellido.Attributes.Add("placeholder", "Ingresar Apellido");
                txtApellido.CssClass = "form-control";

                // Combo para seleccionar el genero.
                lblGenero.Text = "Genero";
                lblGenero.AssociatedControlID = "ddlGenero";
                lblGenero.CssClass = "col-sm-2 control-label";

                //ddlGenero.CssClass = "form-control";
                ddlGenero.CssClass = "form-control";

                // Texbox para ingresar la direccion.
                lblDireccion.Text = "Direccion";
                lblDireccion.AssociatedControlID = "txtDireccion";
                lblDireccion.CssClass = "col-sm-2 control-label";
                txtDireccion.Attributes.Add("placeholder", "Ingresar Direccion");
                txtDireccion.CssClass = "form-control";

                // Combo para seleccionar el departamento.
                lblDepartamento.Text = "Departamento";
                lblDepartamento.AssociatedControlID = "ddlDepartamento";
                lblDepartamento.CssClass = "col-sm-2 control-label";
                ddlDepartamento.CssClass = "form-control";

                // Combo para seleccionar el municipio.
                lblMunicipio.Text = "Municipio";
                lblMunicipio.AssociatedControlID = "ddlMunicipio";
                lblMunicipio.CssClass = "col-sm-2 control-label";
                ddlMunicipio.CssClass = "form-control";

                // Texbox para ingresar el correo.
                lblCorreo.Text = "Correo";
                lblCorreo.AssociatedControlID = "txtCorreo";
                lblCorreo.CssClass = "col-sm-2 control-label";
                txtCorreo.Attributes.Add("placeholder", "Ingresar Correo");
                txtCorreo.CssClass = "form-control";
                txtCorreo.TextMode = TextBoxMode.Email;

                // Texbox para ingresar la fecha de nacimiento.
                lblFechaNacimiento.Text = "Fecha de Nacimiento";
                lblFechaNacimiento.AssociatedControlID = "txtFechaNacimiento";
                lblFechaNacimiento.CssClass = "col-sm-2 control-label";
                txtFechaNacimiento.Attributes.Add("placeholder", "Ingresar Fecha de Nacimiento");
                txtFechaNacimiento.CssClass = "form-control";
                txtFechaNacimiento.TextMode = TextBoxMode.Date;

                // Combo para seleccionar el estado civil.
                lblEstadoCivil.Text = "Estado Civil";
                lblEstadoCivil.AssociatedControlID = "ddlEstadoCivil";
                lblEstadoCivil.CssClass = "col-sm-2 control-label";
                ddlEstadoCivil.CssClass = "form-control";

                // Combo para seleccionar la pareja del servidor.
                lblParejaServidor.Text = "Pareja Servidor";
                lblParejaServidor.AssociatedControlID = "ddlParejaServidor";
                lblParejaServidor.CssClass = "col-sm-2 control-label";
                ddlParejaServidor.CssClass = "form-control";

                // Combo para seleccionar la asamblea.
                lblAsamblea.Text = "Asamblea";
                lblAsamblea.AssociatedControlID = "ddlAsamblea";
                lblAsamblea.CssClass = "col-sm-2 control-label";
                ddlAsamblea.CssClass = "form-control";

                // Texbox para seleccionar la fecha de conversion.
                lblFechaConversion.Text = "Fecha de Conversion";
                lblFechaConversion.AssociatedControlID = "txtFechaConversion";
                lblFechaConversion.CssClass = "col-sm-2 control-label";
                txtFechaConversion.Attributes.Add("placeholder", "Ingresar Fecha de Conversion");
                txtFechaConversion.CssClass = "form-control";
                txtFechaConversion.TextMode = TextBoxMode.Date;

                // Combo para seleccionar el ministerio.
                lblMinisterioServidor.Text = "Ministerio";
                lblMinisterioServidor.AssociatedControlID = "ddlMinisterio";
                lblMinisterioServidor.CssClass = "col-sm-2 control-label";
                ddlMinisterio.CssClass = "form-control";

                // Combo para seleccionar el brazo de ministerio.
                lblBrazoMinisterio.Text = "Brazo de Ministerio";
                lblBrazoMinisterio.AssociatedControlID = "ddlBrazoMinisterio";
                lblBrazoMinisterio.CssClass = "col-sm-2 control-label";
                ddlBrazoMinisterio.CssClass = "form-control";

                // Combo para seleccionar la comision.
                lblComision.Text = "Comision";
                lblComision.AssociatedControlID = "ddlComision";
                lblComision.CssClass = "col-sm-2 control-label";
                ddlComision.CssClass = "form-control";

                // Combo para seleccionar la barca.
                lblBarca.Text = "Barca";
                lblBarca.AssociatedControlID = "ddlBarca";
                lblBarca.CssClass = "col-sm-2 control-label";
                ddlBarca.CssClass = "form-control";

                // Combo para seleccionar el pastor.
                lblPastorServidor.Text = "Pastor Servidor";
                lblPastorServidor.AssociatedControlID = "ddlPastorServidor";
                lblPastorServidor.CssClass = "col-sm-2 control-label";
                ddlPastorServidor.CssClass = "form-control";

                // Checkbox para verificar si es usuario es anciano.
                lblEsAnciano.Text = "Es Anciano";
                lblEsAnciano.AssociatedControlID = "chkEsAnciano";
                lblEsAnciano.CssClass = "col-sm-2 control-label";
                chkEsAnciano.CssClass = "checkbox";

                // Texbox para ingersar el nombre de usuario del sistema
                lblUsuario.Text = "Nombre Usuario";
                lblUsuario.AssociatedControlID = "txtUsuario";
                lblUsuario.CssClass = "col-sm-2 control-label";
                txtUsuario.Attributes.Add("placeholder", "Ingresar Nombre Usuario");
                txtUsuario.CssClass = "form-control";

                // Texbox para ingersar la contraseña del usuario.
                lblContraseña.Text = "Contraseña";
                lblContraseña.AssociatedControlID = "txtContraseña";
                lblContraseña.CssClass = "col-sm-2 control-label";
                txtContraseña.Attributes.Add("placeholder", "Ingresar Contraseña");
                txtContraseña.CssClass = "form-control";
                txtContraseña.TextMode = TextBoxMode.Password;

                // Combo para seleccionar el pastor.
                lblGrupoSeguridad.Text = "Grupo Seguridad";
                lblGrupoSeguridad.AssociatedControlID = "ddlGrupoSeguridad";
                lblGrupoSeguridad.CssClass = "col-sm-2 control-label";
                ddlGrupoSeguridad.CssClass = "form-control";

                // Checkbox para verificar si es permanente el usuario.
                lblEsPermanente.Text = "Es Permanente";
                lblEsPermanente.AssociatedControlID = "chkEsPermanente";
                lblEsPermanente.CssClass = "col-sm-2 control-label";
                chkEsPermanente.CssClass = "checkbox";

                // Checkbox para verificar si es activo el usuario.
                lblEsActivo.Text = "Es Activo";
                lblEsActivo.AssociatedControlID = "chkEsActivo";
                lblEsActivo.CssClass = "col-sm-2 control-label";
                chkEsActivo.CssClass = "checkbox";


                lblMinisterio.Text = "Seleccione Asamblea";
                lblMinisterio.AssociatedControlID = "ddl";
                lblMinisterio.CssClass = "col-sm-1 control-label";
                ddl.CssClass = "form-control";
                // Popup Footer
                btnPopCerrar.Text = "Cerrar";
                btnPopCerrar.CssClass = "btn btn-default";
                //btnPopCerrar.Attributes.Add("data-dismiss", "modal");
                btnPopCerrar.Attributes.Add("formnovalidate", "formnovalidate");

                
                

                btnPopGuardar.Text = "Guardar Cambios";

                btnPopGuardar.OnClientClick = "Guardar";

                this.Session["Grupo"] = "18";
                // Cargar datos.
                this.Page.Form.DefaultButton = btnBuscar.ID;
                this.Page.Form.DefaultFocus = txtBuscar.ID;
                if (RefrescarAsambleas())
                {
                    linkIrMinisterios.Text = "";
                    linkIrMinisterios.Enabled = false;
                    ddl.SelectedIndex = 0;
                    RefrescarGrid(Convert.ToInt64(ddl.SelectedValue));
                }
                else
                {
                    linkIrMinisterios.Text = "Agrear Servidor";
                    linkIrMinisterios.Enabled = true;
                    btnAgregar.Enabled = false;
                    btnBuscar.Enabled = false;
                }
                var oCn_Departamentos = new CN.Departamentos();
                ddlDepartamento = Helpers.Helpers.LlenarDDLOpcional(oCn_Departamentos.Listar(), "id_departamento", "nombre", ddlDepartamento);
                if (ddlDepartamento.Items.Count > 0)
                {
                    var oCn_Municipios = new CN.Municipios();
                    ddlMunicipio = Helpers.Helpers.LlenarDDLOpcional(oCn_Municipios.Listar(Convert.ToInt64(ddlDepartamento.SelectedValue)), "id_municipio", "nombre", ddlMunicipio);
                }

                var oCn_EstadosCiviles = new CN.EstadosCiviles();
                var dtEstadosCiviles = oCn_EstadosCiviles.Listar();

                var dr = dtEstadosCiviles.NewRow();
                dr["nombre"] = "-";
                dr["id_estado_civil"] = 0;
                dtEstadosCiviles.Rows.InsertAt(dr, 0);
                ddlEstadoCivil = Helpers.Helpers.LlenarDDL(dtEstadosCiviles, "id_estado_civil", "nombre", ddlEstadoCivil);

                var oCn_Asambleas = new CN.Asambleas();
                ddlAsamblea = Helpers.Helpers.LlenarDDL(oCn_Asambleas.Listar(Convert.ToInt64(this.Session["Grupo"])), "ID_ASAMBLEA", "nombre", ddlAsamblea);

                var oCn_Ministerios = new CN.Ministerios();
                ddlMinisterio = Helpers.Helpers.LlenarDDLOpcional(oCn_Ministerios.Listar(), "id_ministerio", "nombre", ddlMinisterio);

                if (ddlMinisterio.Items.Count > 0)
                {
                    var oCn_BrazosMinisterio = new CN.BrazosMinisterio();
                    ddlBrazoMinisterio = Helpers.Helpers.LlenarDDLOpcional(oCn_BrazosMinisterio.Listar(Convert.ToInt64(0)), "id_brazo_ministerio", "nombre", ddlBrazoMinisterio);
                }

                var oCn_Servidores = new CN.Servidores();
                ddlParejaServidor = Helpers.Helpers.LlenarDDLOpcional(oCn_Servidores.ListarPareja(ddlGenero.SelectedValue, Convert.ToInt64(this.Session["Grupo"])), "id_servidor", "nombre", ddlParejaServidor);

                var oCn_Comisiones = new CN.Comisiones();
                ddlComision = Helpers.Helpers.LlenarDDLOpcional(oCn_Comisiones.Listar(Convert.ToInt64(this.Session["Grupo"])), "id_comision", "nombre", ddlComision);

                var oCn_Barcas = new CN.Barcas();
                ddlBarca = Helpers.Helpers.LlenarDDLOpcional(oCn_Barcas.Listar(Convert.ToInt64(this.Session["Grupo"])), "id_barca", "nombre", ddlBarca);
            }
        }

        protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
        {
            RefrescarGrid(Convert.ToInt64(ddl.SelectedValue));
        }


        private DataTable LoadData(long p_lID)
        {
            var oCn_Servidores = new CN.Servidores();
            if (txtBuscar.Text != string.Empty)
            {
                return oCn_Servidores.ListarPorBus(txtBuscar.Text, Convert.ToInt64(this.Session["Grupo"]), p_lID);
            }
            else
            {
                return oCn_Servidores.Listar(Convert.ToInt64(this.Session["Grupo"]), p_lID);
            }
        }

        private DataTable ListarAsambleas()
        {
            var oCn_Asambleas = new CN.Asambleas();
            return oCn_Asambleas.Listar(Convert.ToInt64(this.Session["Grupo"]));
        }

        private void RefrescarGrid(long p_lID)
        {
            lsvLista.DataSource = LoadData(p_lID);
            lsvLista.DataBind();

        }

        private Boolean RefrescarAsambleas()
        {
            var ListaAsambleas = ListarAsambleas();
            ddl = Helpers.Helpers.LlenarDDL(ListaAsambleas,"ID_ASAMBLEA","NOMBRE",ddl);
            return ListaAsambleas.Rows.Count > 0 ? true : false;
        }

        protected void OnPagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
        {
            (lsvLista.FindControl("DataPager1") as DataPager).SetPageProperties(e.StartRowIndex, e.MaximumRows, false);
            RefrescarGrid(Convert.ToInt64(ddl.SelectedValue));
        }

        protected void HabilitarControles(bool Habilitar = true)
        {
            txtNombre.Enabled = Habilitar;
            txtApellido.Enabled = Habilitar;
            ddlGenero.Enabled = Habilitar;
            txtDireccion.Enabled = Habilitar;
            ddlDepartamento.Enabled = Habilitar;
            ddlMunicipio.Enabled = Habilitar;
            txtCorreo.Enabled = Habilitar;
            txtFechaNacimiento.Enabled = Habilitar;
            ddlEstadoCivil.Enabled = Habilitar;
            ddlParejaServidor.Enabled = Habilitar;
            ddlAsamblea.Enabled = Habilitar;
            txtFechaConversion.Enabled = Habilitar;
            ddlMinisterio.Enabled = Habilitar;
            ddlBrazoMinisterio.Enabled = Habilitar;
            ddlComision.Enabled = Habilitar;
            ddlBarca.Enabled = Habilitar;
            ddlPastorServidor.Enabled = Habilitar;
            chkEsAnciano.Enabled = Habilitar;
            txtUsuario.Enabled = Habilitar;
            txtContraseña.Enabled = Habilitar;
            ddlGrupoSeguridad.Enabled = Habilitar;
            chkEsPermanente.Enabled = Habilitar;
            chkEsActivo.Enabled = Habilitar;
        }

        protected void LlenarControles(long IdServidor)
        {
            var oCn_Servidores = new CN.Servidores();
            var dtDetallesServidor = oCn_Servidores.ListarPorId(IdServidor);
            if (dtDetallesServidor.Rows.Count > 0)
            {
                //txtFoto.Text = Convert.ToString(dtDetallesServidor.Rows[0]["foto"]);
                txtNombre.Text = Convert.ToString(dtDetallesServidor.Rows[0]["nombre"]);
                txtApellido.Text = Convert.ToString(dtDetallesServidor.Rows[0]["apellido"]);
                ddlGenero.SelectedValue = Convert.ToString(dtDetallesServidor.Rows[0]["genero"]);

                ddlParejaServidor = Helpers.Helpers.LlenarDDLOpcional(oCn_Servidores.ListarPareja(ddlGenero.SelectedValue, Convert.ToInt64(this.Session["Grupo"])), "id_servidor", "nombre", ddlParejaServidor);

                txtDireccion.Text = Convert.ToString(dtDetallesServidor.Rows[0]["direccion"]);
                ddlDepartamento.SelectedValue = VerificarValor(Convert.ToString(dtDetallesServidor.Rows[0]["id_departamento"]));

                if (ddlDepartamento.Items.Count > 0)
                {
                    var oCn_Municipios = new CN.Municipios();
                    ddlMunicipio = Helpers.Helpers.LlenarDDLOpcional(oCn_Municipios.Listar(Convert.ToInt64(ddlDepartamento.SelectedValue)), "id_municipio", "nombre", ddlMunicipio);
                }

                ddlMunicipio.SelectedValue = VerificarValor(Convert.ToString(dtDetallesServidor.Rows[0]["id_municipio"]));

                txtCorreo.Text = Convert.ToString(dtDetallesServidor.Rows[0]["correo"]);
                txtFechaNacimiento.Text = String.Format("{0:yyyy-MM-dd}", ConvertNulagleDateToString(dtDetallesServidor.Rows[0]["fecha_nacimiento"]));


                ddlEstadoCivil.SelectedValue = VerificarValor(Convert.ToString(dtDetallesServidor.Rows[0]["id_estado_civil"]) );
                ddlParejaServidor.SelectedValue = VerificarValor(Convert.ToString(dtDetallesServidor.Rows[0]["id_pareja"]) );
                ddlAsamblea.SelectedValue = VerificarValor(Convert.ToString(dtDetallesServidor.Rows[0]["id_asamblea"]) );
                
                txtFechaConversion.Text = String.Format("{0:yyyy-MM-dd}", ConvertNulagleDateToString(dtDetallesServidor.Rows[0]["fecha_conversion"]));
                
                ddlMinisterio.SelectedValue = VerificarValor(Convert.ToString(dtDetallesServidor.Rows[0]["id_ministerio"]) );

                if (ddlMinisterio.Items.Count > 0)
                {
                    var oCn_BrazosMinisterio = new CN.BrazosMinisterio();
                    ddlBrazoMinisterio = Helpers.Helpers.LlenarDDLOpcional(oCn_BrazosMinisterio.Listar(Convert.ToInt64(ddlMinisterio.SelectedValue)), "id_brazo_ministerio", "nombre", ddlBrazoMinisterio);
                }

                ddlBrazoMinisterio.SelectedValue = VerificarValor(Convert.ToString(dtDetallesServidor.Rows[0]["id_brazo_ministerio"]) );
                ddlComision.SelectedValue = VerificarValor(Convert.ToString(dtDetallesServidor.Rows[0]["id_comision"]));
                ddlBarca.SelectedValue = VerificarValor(Convert.ToString(dtDetallesServidor.Rows[0]["id_barca"]) );
                ddlPastorServidor.SelectedValue = VerificarValor(Convert.ToString(dtDetallesServidor.Rows[0]["id_pastor_servidor"]) );
                
                chkEsAnciano.Checked = Convert.ToBoolean(dtDetallesServidor.Rows[0]["es_anciano"] == DBNull.Value ? 0 : dtDetallesServidor.Rows[0]["es_anciano"]);
                txtUsuario.Text = Convert.ToString(dtDetallesServidor.Rows[0]["usuario"]);
                txtContraseña.Text = Convert.ToString(dtDetallesServidor.Rows[0]["contrasena"]);
                
                ddlGrupoSeguridad.SelectedValue = VerificarValor(Convert.ToString(dtDetallesServidor.Rows[0]["id_grupo_seguridad"]) );
                
                chkEsPermanente.Checked = Convert.ToBoolean(dtDetallesServidor.Rows[0]["es_permanente"] == DBNull.Value ? 0 : dtDetallesServidor.Rows[0]["es_permanente"]);
                chkEsActivo.Checked = Convert.ToBoolean(dtDetallesServidor.Rows[0]["es_activo"] == DBNull.Value ? 0 : dtDetallesServidor.Rows[0]["es_activo"]);

            }
        }

        protected void LimpiarControles()
        {
            //txtFoto.Text = string.Empty;
            txtNombre.Text = string.Empty;
            txtApellido.Text = string.Empty;
            ddlGenero.SelectedValue = "Masculino";
            txtDireccion.Text = string.Empty;
            ddlDepartamento.SelectedValue = null;
            ddlMunicipio.SelectedValue = null;
            txtCorreo.Text = string.Empty;
            txtFechaNacimiento.Text = string.Empty;
            ddlEstadoCivil.SelectedValue = null;
            ddlParejaServidor.SelectedValue = null;
            ddlAsamblea.SelectedValue = null;
            txtFechaConversion.Text = string.Empty;
            ddlMinisterio.SelectedValue = null;
            ddlBrazoMinisterio.SelectedValue = null;
            ddlComision.SelectedValue = null;
            ddlBarca.SelectedValue = null;
            ddlPastorServidor.SelectedValue = null;
            chkEsAnciano.Checked = false;
            txtUsuario.Text = string.Empty;
            txtContraseña.Text = string.Empty;
            ddlGrupoSeguridad.SelectedValue = null;
            chkEsPermanente.Checked = false;
            chkEsActivo.Checked = false;
        }

        protected void Agregar(object sender, EventArgs e)
        {
            LimpiarControles();
            HabilitarControles();
            lblAccion.Text = "Agregar";
            lblPopupTitulo.Text = "Agregar Servidor";
            btnPopGuardar.Text = "Agregar";
            btnPopGuardar.CssClass = "btn btn-primary";
            txtNombre.Focus();

            var dtPastores = CN.Helpers.EjecutarConsultaText("SELECT `id_servidor`, " +
                                                "CONCAT(`nombre`, ' ' , `apellido`) As `nombre` " +
                                                "FROM `sistema-sas`.`servidores` " +
                                                "WHERE `servidores`.`id_grupo` = " + this.Session["Grupo"] +
                                                " AND `servidores`.`genero` = '" + ddlGenero.SelectedValue +  "' ;");
            ddlPastorServidor = Helpers.Helpers.LlenarDDLOpcional(dtPastores, "id_servidor", "nombre", ddlPastorServidor);

            popup.Show();
        }

        protected void Editar(object sender, EventArgs e)
        {
            LimpiarControles();
            ListViewDataItem item = (ListViewDataItem)(sender as Control).NamingContainer;
            Label lblID = (Label)item.FindControl("ID");
            txtId.Text = lblID.Text;

            LlenarControles(Convert.ToInt64(lblID.Text));
            HabilitarControles();



            lblAccion.Text = "Editar";
            lblPopupTitulo.Text = "Editar Servidor";
            btnPopGuardar.Text = "Guardar Cambios";
            btnPopGuardar.CssClass = "btn btn-primary";
            txtNombre.Focus();

            var dtPastores = CN.Helpers.EjecutarConsultaText("SELECT `id_servidor`, " +
                                                            "CONCAT(`nombre`, ' ' , `apellido`) As `nombre` " +
                                                            "FROM `sistema-sas`.`servidores` " +
                                                            "WHERE `servidores`.`id_grupo` = " + this.Session["Grupo"] +
                                                            " AND `servidores`.`genero` = '" + ddlGenero.SelectedValue +  "' AND `servidores`.`id_servidor` != " + txtId.Text + ";");
            ddlPastorServidor = Helpers.Helpers.LlenarDDLOpcional(dtPastores, "id_servidor", "nombre", ddlPastorServidor);

            popup.Show();
        }

        protected void Eliminar(object sender, EventArgs e)
        {
            LimpiarControles();
            ListViewDataItem item = (ListViewDataItem)(sender as Control).NamingContainer;
            Label lblID = (Label)item.FindControl("ID");
            txtId.Text = lblID.Text;
            LlenarControles(Convert.ToInt64(lblID.Text));
            HabilitarControles(false);
              
            lblAccion.Text = "Eliminar";
            lblPopupTitulo.Text = "Eliminar Servidor";
            btnPopGuardar.Text = "Eliminar";
            btnPopGuardar.CssClass = "btn btn-danger";

            popup.Show();
        }

        protected void Guardar(object sender, EventArgs e)
        {
            if (lblAccion.Text != "Eliminar" && txtNombre.Text == "")
            {
                MostarError("Es necesario ingresar el Nombre.");
                return;
            }
            if (lblAccion.Text != "Eliminar" && txtApellido.Text == "")
            {
                MostarError("Es necesario ingresar el Apellido.");
                return;
            }
            if (lblAccion.Text != "Eliminar" && txtDireccion.Text == "")
            {
                MostarError("Es necesario ingresar la Direccion.");
                return;
            }
            if (lblAccion.Text != "Eliminar" && txtFechaNacimiento.Text == "")
            {
                MostarError("Es necesario ingresar la fecha de nacimiento.");
                return;
            }
            if (lblAccion.Text != "Eliminar" && ddlEstadoCivil.SelectedValue == "0")
            {
                MostarError("Es necesario ingresar el estado civil.");
                return;
            }
            var oCn_Servidores = new CN.Servidores();
            var oCe_Servidores = new CE.Servidores();
            var strResultado = string.Empty;


            oCe_Servidores.ID_SERVIDOR = ConvertStringToNulableLong(txtId.Text); 
            oCe_Servidores.ID_GRUPO = Convert.ToInt64(this.Session["Grupo"]);
            //oCe_Servidores.FOTO =   txtFoto.Text;
            oCe_Servidores.NOMBRE = txtNombre.Text;
            oCe_Servidores.APELLIDO = txtApellido.Text;
            oCe_Servidores.GENERO =  ddlGenero.SelectedValue;
            oCe_Servidores.DIRECCION =  txtDireccion.Text;
            oCe_Servidores.ID_DEPARTAMENTO = ConvertStringToNulableLong(ddlDepartamento.SelectedValue);
            oCe_Servidores.ID_MUNICIPIO = ConvertStringToNulableLong(ddlMunicipio.SelectedValue);
            oCe_Servidores.CORREO =  txtCorreo.Text;
            oCe_Servidores.FECHA_NACIMIENTO = ConvertstringToNulableDate(txtFechaNacimiento.Text);
            oCe_Servidores.ID_ESTADO_CIVIL = ConvertStringToNulableLong(ddlEstadoCivil.SelectedValue);
            oCe_Servidores.ID_ASAMBLEA = ConvertStringToNulableLong(ddlAsamblea.SelectedValue);
            oCe_Servidores.FECHA_CONVERSION = ConvertstringToNulableDate(txtFechaConversion.Text);
            oCe_Servidores.ID_MINISTERIO = ConvertStringToNulableLong(ddlMinisterio.SelectedValue);
            oCe_Servidores.ID_BRAZO = ConvertStringToNulableLong(ddlBrazoMinisterio.SelectedValue);
            oCe_Servidores.ID_COMISION = ConvertStringToNulableLong(ddlComision.SelectedValue);
            oCe_Servidores.ID_BARCA = ConvertStringToNulableLong(ddlBarca.SelectedValue);
            oCe_Servidores.ID_PASTOR = ConvertStringToNulableLong(ddlPastorServidor.SelectedValue);
            oCe_Servidores.ES_ANCIANO = chkEsAnciano.Checked;
            oCe_Servidores.USUARIO = txtUsuario.Text;
            oCe_Servidores.CONTRASENA = txtContraseña.Text;
            oCe_Servidores.ID_GRUPO_SEGURIDAD = ConvertStringToNulableLong(ddlGrupoSeguridad.SelectedValue);
            oCe_Servidores.ES_PERMANENTE = chkEsPermanente.Checked;
            oCe_Servidores.ES_ACTIVO = chkEsActivo.Checked;
           if (lblAccion.Text == "Eliminar")
            {
                strResultado = oCn_Servidores.Eliminar(oCe_Servidores, "Prueba");

               DataPager pgr = lsvLista.FindControl("DataPager1") as DataPager;
                if (pgr != null && lsvLista.Items.Count != pgr.TotalRowCount)
                {
                    pgr.SetPageProperties(0, pgr.MaximumRows, false);
                }
            }
            else
            {
                oCe_Servidores.IsNew = lblAccion.Text == "Editar" ? false : true;
                strResultado = oCn_Servidores.GuardarCambios(oCe_Servidores,  "Prueba" );
                popup.Hide();
            }
            switch (strResultado)
            {
                case "El registro no se puede borrar por que tiene registros relacionados.":
                    MostarError(strResultado);
                    break;

                case "Ocurrio un error inesperado al guardar los cambios.":
                    MostarError(strResultado);
                    break;
                default:
                    var strIdPareja = ddlParejaServidor.SelectedValue == "0" ? "NULL" : ddlParejaServidor.SelectedValue;
                    var strIdServidor = txtId.Text;
                    if (lblAccion.Text == "Agregar")
                    {
                        CN.Helpers.EjecutarComandoText("DELETE FROM servidores_parejas WHERE Servidor = " + strIdPareja + " OR Pareja = " + strIdPareja + "; ");
                        if (ddlParejaServidor.SelectedValue != "0" && ddlParejaServidor.Enabled == true)
                        {
                            CN.Helpers.EjecutarComandoText("INSERT INTO `sistema-sas`.`servidores_parejas` (`Servidor`,`Pareja`) VALUES((SELECT MAX(ID_SERVIDOR) FROM servidores)," + strIdPareja + ");");
                        }
                    }
                    else if (lblAccion.Text == "Editar")
                    {
                        CN.Helpers.EjecutarComandoText("DELETE FROM servidores_parejas WHERE Servidor = " + strIdServidor + " OR Pareja = " + strIdServidor + " OR Servidor = " + strIdPareja + " OR Pareja = " + strIdPareja + ";");
                        if (ddlParejaServidor.SelectedValue != "0" && ddlParejaServidor.Enabled == true)
                        {
                            CN.Helpers.EjecutarComandoText("INSERT INTO `sistema-sas`.`servidores_parejas` (`Servidor`,`Pareja`) VALUES(" + strIdServidor + "," + strIdPareja + ");");
                        }
                    }
                    else
                    {
                        CN.Helpers.EjecutarComandoText("DELETE FROM servidores_parejas WHERE Servidor = " + strIdServidor + " OR Pareja = " + strIdServidor + " OR Servidor = " + strIdPareja + " OR Pareja = " + strIdPareja + ";");
                    }
                    
                    MostarExito(strResultado);
                    break;
            }

            RefrescarGrid(Convert.ToInt64(ddl.SelectedValue));
        }

        protected void Buscar(object sender, EventArgs e)
        {
            RefrescarGrid(Convert.ToInt64(ddl.SelectedValue));
            udp.Update();
        }

        protected void CerrarPop(object sender, EventArgs e)
        {
            popup.Hide();
        }

        protected void ddlDepartamentos_SelectedIndexChanged(object sender, EventArgs e)
        {
            var oCn_Municipios = new CN.Municipios();
            ddlMunicipio = Helpers.Helpers.LlenarDDLOpcional(oCn_Municipios.Listar(Convert.ToInt64(ddlDepartamento.SelectedValue)), "id_municipio", "nombre", ddlMunicipio);
        }

        protected void ddlMinisterio_SelectedIndexChanged(object sender, EventArgs e)
        {
            var oCn_BrazosMinisterio = new CN.BrazosMinisterio();
            ddlBrazoMinisterio = Helpers.Helpers.LlenarDDLOpcional(oCn_BrazosMinisterio.Listar(Convert.ToInt64(ddlMinisterio.SelectedValue)), "id_brazo_ministerio", "nombre", ddlBrazoMinisterio);
        }

        protected void ddlSexo_SelectedIndexChanged(object sender, EventArgs e)
        {
            var oCn_Servidores = new CN.Servidores();
            ddlParejaServidor = Helpers.Helpers.LlenarDDLOpcional(oCn_Servidores.ListarPareja(ddlGenero.SelectedValue, Convert.ToInt64(this.Session["Grupo"])), "id_servidor", "nombre", ddlParejaServidor);

            var dtPastores = CN.Helpers.EjecutarConsultaText("SELECT `id_servidor`, " +
                                                "CONCAT(`nombre`, ' ' , `apellido`) As `nombre` " +
                                                "FROM `sistema-sas`.`servidores` " +
                                                "WHERE `servidores`.`id_grupo` = " + this.Session["Grupo"] +
                                                " AND `servidores`.`genero` = '" + ddlGenero.SelectedValue + (txtId.Text == "" ? "' ;" : "' AND `servidores`.`id_servidor` != " + txtId.Text + ";"));
            ddlPastorServidor = Helpers.Helpers.LlenarDDLOpcional(dtPastores, "id_servidor", "nombre", ddlPastorServidor);
        }

        protected void ddlEstadoCivil_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlEstadoCivil.SelectedItem.Text == "Soltero" || ddlEstadoCivil.SelectedItem.Text == "Divorciado")
            {
                ddlParejaServidor.Enabled = false;
            }
            else
            {
                ddlParejaServidor.Enabled = true;
            }
        }

        protected long? ConvertStringToNulableLong(string Valor)
        {
            try
            {
                return Int64.Parse(Valor);
            }
            catch (System.FormatException)
            {
                return (long?)null;
            }

        }

        protected DateTime? ConvertstringToNulableDate(string Valor)
        {
            try
            {
                return DateTime.Parse(Valor);
            }
            catch(System.FormatException)
            {
                return (DateTime?)null;
            }
        }

        protected object ConvertNulagleDateToString(Object Valor)
        {
            try
            {
                if (string.IsNullOrEmpty(Convert.ToString(Valor).Trim()))
                {
                    Valor = DateTime.MinValue;
                }
                return  Convert.ToDateTime(Valor) == DateTime.MinValue ? null : Valor;
            }
            catch (System.FormatException)
            {
                return (DateTime?)null;
            }
        }

        protected string VerificarValor(object Valor)
        {
            if (Convert.ToString(Valor) == null || Convert.ToString(Valor) == "0" || Convert.ToString(Valor) == "")
            {
                return null;
            }
            else
            {
                return Convert.ToString(Valor);
            }
        }


        protected void ModificarServicios(object sender, EventArgs e)
        {
            ListViewDataItem item = (ListViewDataItem)(sender as Control).NamingContainer;
            Label lblID = (Label)item.FindControl("ID");
            Label lblNombre = (Label)item.FindControl("nombre");
            Label lblApellido = (Label)item.FindControl("apellido");
            this.Session["Servidor"] = lblID.Text;
            this.Session["Asamblea"] = ddl.SelectedValue;
            this.Session["NombreServidor"] = lblNombre.Text + (lblApellido.Text != ""? " " + lblApellido.Text: "") ;
            Response.Redirect("~/CatalogosGrupales/Servidores/ServiciosServidor.aspx");
            //Server.Transfer("~/CatalogosGrupales/Servidores/ServiciosServidor.aspx");
            //this.Session["Grupo"] = "18";
            //this.Session["Asamblea"] = "18";
            //this.Session["Servidor"] = "18";
           //this.Session["Grupo"] = "18";
        }



        //---------------------------------------------------------------------------------------------------------------

        //protected void imageID_Init(object sender, EventArgs e)
        //{
        //    imageID.ImageUrl = "~/Handlers/ClientPicture.ashx?ClientID=" + Request.QueryString["ClientID"];
        //}


        //protected void btnUpload_Click(object sender, EventArgs e)
        //{
        //    if(FileUpload1.HasFile)
        //    {
        //        FileUpload1.SaveAs(MapPath("~/Fotos/" + FileUpload1.FileName));
        //        imgView.ImageUrl = "~/Fotos/" + FileUpload1.FileName;
        //    }
        //}
    }
}